package com.myk.game.heroscuffle.game;

/**
 * 游戏过程中角色的一些状态标志
 */
public abstract class Sign {

    /**
     * 标记名称
     */
    public final String SIGN_NAME;
    /**
     * 标记的宿主
     */
    public Hero hostHero;
    /**
     * 当前游戏状态
     */
    public Game game;

    public Sign(String SIGN_NAME) {
        this.SIGN_NAME = SIGN_NAME;
    }

    /**
     * 获取格式化的标记名称
     */
    public String getObviousName() {
        return "/" + SIGN_NAME + "/";
    }

    /**
     * 将标记添加到指定英雄身上
     */
    protected void paste(Hero hostHero) {
        this.hostHero = hostHero;
        this.game = hostHero.game;
        hostHero.SIGNS.add(this);
    }

    /**
     * 状态更新产生的效果
     */
    protected abstract void update();

    /**
     * 标记被移除时产生的效果
     */
    protected void remove(Hero hostHero){
        hostHero.SIGNS.remove(this);
    }

}
